硅谷来信:快速行动,Facebook、Quora等成功的“神器”!
👆点击“博文视点Broadview”,获取更多书讯
在 Facebook(Meta)位于门洛帕克(Menlo Park)总部的走廊里,有一张海报,上面用红色的大写字母写着:“MOVE FAST AND BREAK THINGS”。
这句口号催动着这家社交网络公司呈指数级增长,在短短8年内就获得了10亿以上的用户。
是什么带给了Facebook(Meta)在早期疯长的“原动力”?
秘密就是“快速行动”!
Facebook(Meta)增长的“撒手锏”
新员工在Facebook为期6周的入职培训(Bootcamp)中被灌输了迅速行动的文化。
许多新员工,包括以前从未使用过PHP(Facebook网站的主要编程语言)的人,在工作的头几天就要把他们的代码发布到生产环境。
Facebook的文化强调快速迭代和关注影响力,而不是保守和尽量减少错误。
这家公司可能不会在生产环境中采用持续部署,但它已经设法有效地扩大了其工作流程的规模,使1000多名软件工程师能够以每天两次的频率将代码部署到Facebook网站,这是一个让人叹为观止的壮举。
迭代得越快,就能越快了解哪些做法可行、哪些不可行,从而构建更多的功能,尝试更多的想法。
当然,并不是每一个变更都会产生正面的价值和正向增长。Beacon是Facebook早期的广告产品之一,它会自动将用户在其他网站上的活动转播到Facebook。该产品因为暴露用户隐私而引起轩然大波,不得不下线。但是随着每一次迭代,Facebook的员工会更科学地了解哪些变更能将产品引向正确的方向,使我们未来的努力更加有效。
Facebook首席执行官马克·扎克伯格(Mark Zuckerberg)在首次公开募股(IPO)时所写的信中提到了迅速行动的重要性:
“迅速行动使我们能够开发更多东西,更快地学习知识,”他写道,“但是,大多数公司一旦成长起来,发展速度就会大大放缓,因为与行动缓慢导致错失良机相比,他们更害怕犯错……如果你从未打破常规,可能是因为你的行动速度还不够快。”
秉持高速迭代的信念是Facebook能够走到今天的关键因素。
Quora光速崛起的“法宝”
除了Facebook,每一天,Quora团队也可能发布其产品的40到50个新版本。
他们采用一种特殊的实践,可以自动发送要部署到生产环境的任何新代码。每一次变更平均只需7分钟就能通过数千次测试的审查,并获得许可,向数百万用户发布。这种情况每天都在发生,并且不需要任何人工干预。
对于没有经历过持续部署的人来说,这似乎是一个可怕或不可行的过程。
Quora团队是如何在不牺牲质量和可靠性的情况下,比其他团队更频繁地部署软件的(事实上,这种差别是数量级的)?
我们为什么要如此频繁地发布软件?
为什么不招聘一个质量保证团队对每一个发布的版本进行完整性检查,或者把这项工作外包出去?
答案是持续部署。
持续部署在帮助团队开发产品方面发挥了重要作用。为什么持续部署的作用如此强大?
从根本上说,它允许软件工程师部署小范围的增量变更,而不是其他公司通常所做的大范围的批量变更。这种方式上的转变消除了与传统发布过程相关的大量成本,使变更的原因更容易被了解,并使工程师能够更快地迭代产品。
因为每次变更都是以较小的批量进行的,所以发现问题后也更容易调试和修复。
当出现某个bug,或者某个性能或业务指标因发布的新版本而下降时,按周发布的团队通常必须从上周的数百个变更中找出问题。而如果采用持续部署,从过去几小时内部署的少量代码变更中找到问题并将其隔离,通常是一项简单的工作。
增量部署变更并不意味着无法发布更复杂的功能,或者用户只能体验功能的“半成品”。
一个复杂功能会被一个配置开关所控制,在该功能完全就绪之前,这个配置开关是禁用的。
类似的配置开关允许团队有选择地为内部团队成员、测试版用户或部分生产流量启用某个功能,直到该功能全部开发完。在实践中,这也意味着要将变更增量地合并到主代码库中。
这样做可以使团队避免紧张的配合协作与“合并地狱”——这种情况通常伴随着更长的发布周期,因为需要努力合并大量新代码,使其能一起正常工作。
专注于小的增量变更,也为那些在传统发布流程中不可能实现的新技术打开了大门。
假设我们正在产品研讨会上讨论是否应该保留某个功能。我们可以简单地记录所关注的交互,在部署后的几分钟之内就能看到初始数据,而不应该让个人观点和办公室政治决定该功能的去留,或是等到下一个发布周期才开始收集其使用数据。或者假设我们发现网站的某个页面出现性能倒退,可以花几分钟部署一个变更来启动日志,这样就可以得到页面时间耗费情况的实时分析,而不必通过扫描全部代码来确定性能回归测试的范围。
快速行动的其他“神器”
今天,Quora的团队并不是唯一一个强调快速迭代的重要性的团队。
Esty、IMVU、Wealthfront、GitHub以及其他科技公司的工程团队也将持续部署(或是持续交付,即软件工程师可以选择和决定部署哪个版本)纳入工作流程。
而除了持续部署,投资节省时间的工具、改进调试周期、掌握编程工作流程,以及使用更广泛的方法——消除发现的任何瓶颈,也都已经成为众多用于提高迭代速度的强大方法之一。
所有这些方法都实现了与持续部署相同的目标——帮助我们快速行动,从而快速了解什么是可行的、什么不可行。
如果想了解这些内容的具体概念和可操作步骤,可以阅读埃德蒙·刘(Edmond Lau)的新书《卓有成效的工程师》。
作为工程师世界的《原则》,这本书问世以来在互联网世界引发讨论狂潮,被戏称为中国人最爱啃的英文原著,豆瓣评分很快破9,大量中外一线企业管理者成为这本书的首批读者,并组织内部员工学习、仿效。
预售期间,即登顶京东日榜TOP1
读者专享福利价
快快扫码抢购吧!
热文推荐
▼点击阅读原文,了解本书详情~